﻿Imports lbGlobalcom

Public Class fFacturacion
    Dim daMovimi As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
    Dim daMovimiDetalle As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
    Dim daMovimiDetDescri As lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
    Dim daTipoDoc As lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
    Dim daTerce As lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
    Dim daProv As lbGlobalcom.dsTerceroTableAdapters.TER_PROVEEDORESTableAdapter
    Dim daCli As lbGlobalcom.dsTerceroTableAdapters.TER_CLIENTESTableAdapter
    Dim daVen As lbGlobalcom.dsTerceroTableAdapters.TER_VENDEDORTableAdapter
    Dim daTipoSubProd As lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
    Dim daInv As lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
    Dim drProv As lbGlobalcom.dsTercero.TER_PROVEEDORESRow
    Dim drCli As lbGlobalcom.dsTercero.TER_CLIENTESRow
    Dim drVen As lbGlobalcom.dsTercero.TER_VENDEDORRow
    Dim cListaP As lbGlobalcom.cEncaListaPrecios
    'Dim cDetLis As lbGlobalcom.cDetalleListaPrecios
    Dim CantOld As Integer = 0
    Dim mensajeValidacion = ""
    'Dim cMov As New lbGlobalcom.cMovimiento
    Dim cCom As lbGlobalcom.cCompra
    Dim iTipoDoc As cTipoDocumento
    Dim iPer As cPeriodos
    Dim iBodOri As cBodegas
    Dim iBodDes As cBodegas
    Dim iFP As cFormasPago
    Dim iTerce As cTercero
    Dim iCliente As cClientes
    Dim iProd As cProducto
    Private lDocCerrado As String
    Private lEliminaDoc As Boolean = False
    Private lIdPrepackSel As Int16 = 0
    Private TotalAbonos As Decimal = 0

    Private Sub fFacturacion_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(False)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub fMovimiento_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            daMovimi = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
            daMovimiDetalle = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTODETALLETableAdapter
            daMovimiDetDescri = New lbGlobalcom.dsMovimientoTableAdapters.MOV_DESCRIPCIONDETTableAdapter
            daTipoDoc = New lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
            daTerce = New lbGlobalcom.dsTerceroTableAdapters.TER_TERCEROTableAdapter
            daTipoSubProd = New lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
            daTipoSubProd.FillByIdGrupo(DsGlobalTipoSubProd.GLO_DATOSTABLAS, "sp")
            daInv = New lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            DsInventarios.INV_TIPOSPREPACKS.Merge(cGeneral.GetTiposPrepacks())
            FECHADOCUMENTODateTimePicker.MaxDate = CustomPrincipal.Periodo.HASTAF
            FECHADOCUMENTODateTimePicker.MinDate = CustomPrincipal.Periodo.DESDEF
            If CustomPrincipal.Periodo.DESDEF <= Date.Today And CustomPrincipal.Periodo.HASTAF >= Date.Today Then
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = Date.Today
            Else
                DsMovimiento.MOV_MOVIMIENTO.Columns("FECHADOCUMENTO").DefaultValue = CustomPrincipal.Periodo.HASTAF
            End If
            DsMovimiento.MOV_MOVIMIENTO.Columns("FECHAVENCIMIENTO").DefaultValue = Date.Today
            DsMovimiento.MOV_MOVIMIENTO.Columns("IDCAJA").DefaultValue = CustomPrincipal.IdCaja
            iPer = New cPeriodos()
            DsMovimiento.MOV_MOVIMIENTODETALLE.Columns("IDPREPACK").DefaultValue = 0
            cGeneral.BloquearOrdenDatagrid(MOV_DESCRIPCIONDETALLEDataGridView)
            cGeneral.BloquearOrdenDatagrid(MOV_MOVIMIENTODETALLEDataGridView)
            cActivaSeguridad.AseguraGridMovimi(MOV_MOVIMIENTODETALLEDataGridView)
            lDocCerrado = "N"
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try


    End Sub

    Private Sub btnBuscaBodOri_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaBodOri.Click
        Try
            Dim fBusBod As New fListaBodegas
            fBusBod.idSede = IDSEDETextBox.Text
            If fBusBod.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDBODEGAORIGENTextBox.Text = fBusBod.Bodega
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaCanal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCanal.Click
        Try
            Dim fLC As New fListaCanales
            If fLC.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDCANALTextBox.Text = fLC.Canal
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaCCosto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCCosto.Click
        Try
            Dim fCC As New fListaCCostos
            If fCC.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDCCOSTOTextBox.Text = fCC.CCosto
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaLista_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaLista.Click
        Try
            Dim fLP As New fListaPrecios
            If fLP.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDLISTATextBox.Text = fLP.Lista
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub CargaTipoDoc(ByVal TipoDoc As String)
        Try
            iTipoDoc = New cTipoDocumento(TipoDoc)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(TipoDoc, iTipoDoc.DocEs)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ConfiguraByTipoDoc()
        Select Case iTipoDoc.DocEs
            Case 1
                btnBuscaBodOri.Enabled = False
                IDBODEGAORIGENTextBox.Enabled = False
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 2
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 3
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = False
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
            Case 4
                btnBuscaBodOri.Enabled = True
                IDBODEGAORIGENTextBox.Enabled = True
                IDTERCEROTextBox.Enabled = True
                SUCURSALTextBox.Enabled = True
                IDCANALTextBox.Enabled = True
                btnBuscaCanal.Enabled = True
                IDVENDEDORTextBox.Enabled = True
                btnBuscaVend.Enabled = True
            Case 5
                btnBuscaBodOri.Enabled = False
                IDBODEGAORIGENTextBox.Enabled = False
                IDTERCEROTextBox.Enabled = True
                SUCURSALTextBox.Enabled = False
                IDCANALTextBox.Enabled = False
                btnBuscaCanal.Enabled = False
                IDVENDEDORTextBox.Enabled = False
                btnBuscaVend.Enabled = False
        End Select
    End Sub
    Private Sub ActualizaDatosDoc()
        Try
            IDBODEGAORIGENTextBox.Text = iTipoDoc.BodegaDe
            IDCCOSTOTextBox.Text = iTipoDoc.idCcosto
            IDLISTATextBox.Text = iTipoDoc.idLista
            IDSEDETextBox.Text = iTipoDoc.idSede
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnBuscaDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaDoc.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "VEN"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDDOCUMENTOTextBox.Text = fLDoc.idTipoDoc
                CargaTipoDoc(fLDoc.idTipoDoc)
                ConfiguraByTipoDoc()
                ActualizaDatosDoc()
                MOV_MOVIMIENTOBindingSource.EndEdit()
                If iTipoDoc.permiteModVal = "N" Then
                    MOV_MOVIMIENTODETALLEDataGridView.Columns.Item(8).ReadOnly = True
                    MOV_MOVIMIENTODETALLEDataGridView.Columns.Item(9).ReadOnly = True
                End If
                Dim cRec As New cRecibos(DsConsultaMovimi)
                cRec.cargarMediosPago()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ActualizaFormaPago(ByVal FP As String)
        iFP = New cFormasPago(FP)
        Try
            FECHAVENCIMIENTODateTimePicker.Value = iFP.GetFechaVence(FECHADOCUMENTODateTimePicker.Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub ActualizaDatosTercero()
        Try
            iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
            If iTerce.iClientes IsNot Nothing Then
                txtNombreTercero.Text = iTerce.NombreCompleto
                TXTDIRECCION.Text = iTerce.Direccion
                Dim daMuni As New lbGlobalcom.dsGlobalTableAdapters.GLO_MUNICIPIOSTableAdapter
                TXTCIUDAD.Text = iTerce.iMunicipios.Municipio
                If iTipoDoc.DocEs = eTipoMovimi.Venta Then
                    If iTerce.iClientes IsNot Nothing Then
                        If IDCANALTextBox.Text.Trim.Length = 0 Then _
                            IDCANALTextBox.Text = iTerce.iClientes.idCanal
                        txtFP.Text = iTerce.iClientes.idFormaPago
                        If iTerce.iClientes.idVendedor.Length > 0 Then
                            IDVENDEDORTextBox.Text = iTerce.iClientes.idVendedor
                        End If
                        If iTerce.iClientes.idListaGlobal IsNot Nothing AndAlso iTerce.iClientes.idListaGlobal.Trim.Length > 0 And IDLISTATextBox.Text.Trim.Length = 0 Then _
                            IDLISTATextBox.Text = iTerce.iClientes.idListaGlobal
                        If txtFP.Text.Trim.Length = 0 Then
                            iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
                            ActualizaFormaPago(iTerce.iClientes.idFormaPago)
                        End If
                        'If Not iTerce.iClientes.BodegaConsignacion Is DBNull.Value AndAlso iTerce.iClientes.BodegaConsignacion.Trim.Length > 0 Then
                        '    Me.IDBODEGAORIGENTextBox.Text = iTerce.iClientes.BodegaConsignacion
                        'End If
                    Else
                        MessageBox.Show("Cliente no existe verifique e intente de nuevo", "Cliente No Existe", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                    End If
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnBuscaTerce_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaTerce.Click
        Try
            Dim fBT As New fBuscaTercero
            fBT.TipoTercero = "Cliente"
            If fBT.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDTERCEROTextBox.Text = fBT.midTercero
                SUCURSALTextBox.Text = fBT.mSucursal
                iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
                ActualizaDatosTercero()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscasede_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscasede.Click
        Try
            Dim fLS As New fListaSedes
            If fLS.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDSEDETextBox.Text = fLS.Sede
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaVend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaVend.Click
        Dim fVen As New fBuscaTercero
        fVen.TipoTercero = "Vendedor"
        If fVen.ShowDialog = Windows.Forms.DialogResult.OK Then
            IDVENDEDORTextBox.Text = fVen.midTercero
        End If
    End Sub

    Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
        Try
            IDDOCUMENTOTextBox.Enabled = True
            NUMEROTextBox.Enabled = True
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
            lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, True)
            If DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(True)
                End If
            End If
            MOV_MOVIMIENTOBindingSource.CancelEdit()
            DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
            DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
            MOV_MOVIMIENTOBindingSource.AddNew()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellBeginEdit
        Try
            If NUMEROTextBox.Text <> "" AndAlso IDDOCUMENTOTextBox.Text <> "" Then
                MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, e.RowIndex)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
   
    End Sub
    Private Sub ActualizaDatosProd(ByVal Fila As Integer)
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then
                Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, IDCANALTextBox.Text)
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDIVA").Value = cDetLis.iProducto.IdTipoIva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORBASE").Value = cDetLis.PrecioConDto
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("VALORIVA").Value = cDetLis.Iva
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDTIPOLISTA").Value = cListaP.tipoLista
                MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("NUMEROLINEAPADRE").Value = 0
                Dim idTerce As String = ""
                If iBodOri.ExistenciaCliente.ToUpper = "S" Then
                    idTerce = IDTERCEROTextBox.Text
                Else
                    idTerce = "0"
                End If
                Dim iInv As cInventarios = New cInventarios(DsMovimiento, iPer.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value, idTerce, IIf(IsDBNull(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPREPACK").Value), 0, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPREPACK").Value))
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS: " & iInv.Existencia
            Else
                stMovimi.Text = ""
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellMouseDoubleClick
        Try
            Select Case e.ColumnIndex
                Case 3
                    If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 3 Then
                            MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, e.RowIndex)
                            Dim fLProd As New fListaProductos
                            fLProd.ListaPrecios = IDLISTATextBox.Text
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                                MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                MOV_MOVIMIENTODETALLEDataGridView.EndEdit()
                                Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(fLProd.idArticulo, IDCANALTextBox.Text)
                                ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                            End If
                        End If
                    End If
            End Select
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub ActualizaExistencias(ByVal Fila As Integer)
        Try
            Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells(3).Value, IDCANALTextBox.Text)
            Dim iInv As cInventarios = New cInventarios(DsMovimiento, CustomPrincipal.Periodo.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("LINEA").Value, "0", lIdPrepackSel)
            If iInv Is Nothing Then
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
            Else
                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS : " & iInv.ExistenciaNeta
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub
    Private Sub CalculaVrLinea()
        Dim PBaseConDto As Double = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("VALORBASE").Value * (1 - MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("DESCUENTO1").Value) * (1 - MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("DESCUENTO2").Value)
        iProd = New cProducto(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value)
        Dim IvaConDto As Double = PBaseConDto * iProd.iTipoIva.PorIva
        MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("VALORIVA").Value = IvaConDto
        'MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("VALORLINEA").Value = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value * (PBaseConDto + IvaConDto)
    End Sub
    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidated
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode AndAlso NUMEROTextBox.Text <> "" AndAlso IDDOCUMENTOTextBox.Text <> "" Then
                Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                    Case "IDPRODUCTO"
                        Dim cDescDtalle As cCargarDescripcionDtalle = New cCargarDescripcionDtalle(DsMovimiento, IDBODEGAORIGENTextBox.Text, IDDOCUMENTOTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value, NUMEROTextBox.Text, MOV_MOVIMIENTODETALLEBindingSource.Position)
                        cDescDtalle.cargaDescripcionDtalle()
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "CANTIDAD"
                        MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                        If lIdPrepackSel >= 0 And MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value >= 0 Then
                            GetDetalleInventario(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value - CantOld, e.RowIndex)
                            CalculaVrLinea()
                            CantOld = 0
                        End If
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "DESCUENTO1"
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "DESCUENTO2"
                        MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
                        SalvaCambios(False)
                    Case "VALORBASE"
                        MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
                        CalculaVrLinea()
                        SalvaCambios(False)
                End Select

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.CellValidating
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.IsCurrentCellInEditMode AndAlso e.FormattedValue IsNot Nothing AndAlso e.FormattedValue <> "" Then
                Select Case MOV_MOVIMIENTODETALLEDataGridView.Columns(e.ColumnIndex).Name
                    Case "IDPRODUCTO"
                        ActualizaDatosProd(e.RowIndex)
                    Case "IDPREPACK"
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                            Dim cMov As cMovimiento = New cMovimiento(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value)
                            If cMov.validaMovimientoDescripcion Then
                                'e.Cancel = True
                            Else
                                MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("CANTIDAD").Value = 0
                            End If
                            ActualizaExistencias(e.RowIndex)
                        Else
                            e.Cancel = True
                        End If
                    Case "CANTIDAD"
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                            Dim idprep As Integer = IIf(IsDBNull(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value) = True, 0, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPREPACK").Value)
                            lIdPrepackSel = idprep
                            Dim idTerce As String = ""
                            If iBodOri.ExistenciaCliente.ToUpper = "S" Then
                                idTerce = IDTERCEROTextBox.Text
                            Else
                                idTerce = "0"
                            End If

                            Dim iInv As cInventarios = New cInventarios(DsMovimiento, iPer.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("lINEA").Value, idTerce, idprep)
                            Dim drMov As dsMovimiento.MOV_MOVIMIENTODETALLERow
                            If DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Count - 1 < MOV_MOVIMIENTODETALLEBindingSource.Position Then

                                drMov = Nothing
                            Else
                                drMov = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEBindingSource.Position)
                            End If

                            If Not iInv.HayExistencias(drMov, CInt(e.FormattedValue)) Then
                                MessageBox.Show("Existencias insuficientes", "Existencias", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                                If iTipoDoc.existenciasNegativas.ToUpper = "N" Then
                                    e.Cancel = True
                                End If
                            End If

                            Dim cMovi As cMovimiento = New cMovimiento(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value)
                            Dim cantidadRegDescrDetalle As Integer = cMovi.cantidadPrepackCargados()
                            If cantidadRegDescrDetalle > e.FormattedValue Then
                                MessageBox.Show("La cantidad es menor a los registros Chequeados,se debe borrar los registros", "chequeado", MessageBoxButtons.OK)
                                e.Cancel = True
                            End If
                            CantOld = iInv.CantidadOri
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            stMovimi.Text = ""
            e.Cancel = True
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub comboBox_selctedindexchanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim CB As ComboBox = CType(sender, ComboBox)
        If CB.ValueMember = "IDPREPACK" AndAlso CB.SelectedValue IsNot Nothing Then _
            lIdPrepackSel = CB.SelectedValue
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.EditingControlShowing
        Try
            If TypeOf e.Control Is ComboBox Then
                If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing AndAlso MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value IsNot DBNull.Value Then
                    AddHandler CType(e.Control, ComboBox).SelectedIndexChanged, AddressOf comboBox_selctedindexchanged
                Else
                    MessageBox.Show("Debe seleccionar Un Producto", "ValidaProducto", MessageBoxButtons.OK)
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        
    End Sub


    Private Sub MOV_MOVIMIENTODETALLEDataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.GotFocus
        Try
            Dim cVal As New cValidaciones(DsMovimiento)
            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                MOV_MOVIMIENTOBindingSource.EndEdit()
                mensajeValidacion = cVal.ValidaMovimiento(iTipoDoc.DocEs)
                If mensajeValidacion <> "" Then
                    IDSEDETextBox.Focus()
                    MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
                Else
                    If DsMovimiento.MOV_MOVIMIENTO.Rows(MOV_MOVIMIENTOBindingSource.Position).RowState = DataRowState.Added Then
                        NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
                        SalvaCambios(False)
                    End If
                End If
            Else
                IDSEDETextBox.Focus()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub IDLISTATextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDLISTATextBox.TextChanged
        Try
            If IDLISTATextBox.Text.Trim.Length > 0 Then _
                cListaP = New cEncaListaPrecios(IDLISTATextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 3 Then
                            MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("LINEA").Value = cGeneral.GetNumeroLinea(MOV_MOVIMIENTODETALLEDataGridView, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                            Dim fLProd As New fListaProductos
                            fLProd.ListaPrecios = IDLISTATextBox.Text
                            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                                MOV_MOVIMIENTODETALLEDataGridView.BeginEdit(True)
                                MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                MOV_MOVIMIENTODETALLEDataGridView.EndEdit()
                                Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(fLProd.idArticulo, IDCANALTextBox.Text)
                                ActualizaDatosProd(MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.Y)
                                stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.RowEnter
        Try
            If e.RowIndex >= 0 AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex) IsNot Nothing AndAlso MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPRODUCTO").Value IsNot Nothing Then
                Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPRODUCTO").Value, IDCANALTextBox.Text)
                Dim iInv As cInventarios = New cInventarios(DsMovimiento, iPer.IDPERIODO, IDBODEGAORIGENTextBox.Text, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPRODUCTO").Value, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("LINEA").Value, "0", IIf(IsDBNull(MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPREPACK").Value), 0, MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPREPACK").Value))
                If iInv Is Nothing Then
                    stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido
                Else
                    stMovimi.Text = "PRODUCTO: " & cDetLis.iProducto.Descripcion & " UNIDAD: " & cDetLis.iProducto.Unidad & " CONTENIDO: " & cDetLis.iProducto.Contenido & " EXISTENCIAS " & MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("IDPREPACK").Value & ": " & iInv.ExistenciaNeta
                End If
                txtCont.Text = cDetLis.iProducto.CantidadSubProd
                txtCantidad.Text = cDetLis.iProducto.CantidadSubProd * MOV_MOVIMIENTODETALLEDataGridView.Rows(e.RowIndex).Cells("CANTIDAD").Value
            Else
                stMovimi.Text = ""
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub SalvaCambios(ByVal Msj As Boolean)
        Try

            Dim AfecInv As cAfectaIventarios
            If Msj Then _
                Validate()
            IDDOCUMENTOTextBox.Enabled = False
            NUMEROTextBox.Enabled = False
            btnBuscaDoc.Enabled = False
            MOV_MOVIMIENTOBindingSource.EndEdit()
            MOV_MOVIMIENTODETALLEBindingSource.EndEdit()
            MOV_DESCRIPCIONDETALLEBindingSource.EndEdit()
            If iTerce IsNot Nothing Then
                AfecInv = New cAfectaIventarios(DsMovimiento, iTipoDoc, iPer, False, iTerce.iClientes, lDocCerrado)
            Else
                AfecInv = New cAfectaIventarios(DsMovimiento, iTipoDoc, iPer, False, lDocCerrado)
            End If
            AfecInv.AfectaInventarios()
            AfecInv = Nothing
            If lEliminaDoc Then
                daMovimiDetDescri.Update(DsMovimiento.MOV_DESCRIPCIONDET)
                daMovimiDetalle.Update(DsMovimiento.MOV_MOVIMIENTODETALLE)
                daMovimi.Update(DsMovimiento.MOV_MOVIMIENTO)
                lEliminaDoc = False
            Else
                daMovimi.Update(DsMovimiento.MOV_MOVIMIENTO)
                daMovimiDetalle.Update(DsMovimiento.MOV_MOVIMIENTODETALLE)
                daMovimiDetDescri.Update(DsMovimiento.MOV_DESCRIPCIONDET)
            End If

            If iTipoDoc.TipoDocGenera IsNot DBNull.Value AndAlso iTipoDoc.TipoDocGenera.Trim.Length > 0 Then
                Dim DocGen As cGeneraDocumentoAutomatico = New cGeneraDocumentoAutomatico(iTipoDoc.TipoDocGenera, DsMovimiento)
                DocGen = Nothing
            End If
            If iTipoDoc.idMacro.Trim.Length > 0 Then
                Dim ProMacro As cProcesaMacro = New cProcesaMacro(iTipoDoc.idMacro, DsMovimiento)
                ProMacro = Nothing
            End If
            If Msj Then _
                MessageBox.Show("Se salvarón cambios con exito", "Salvar Cambios", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub MOV_MOVIMIENTOBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MOV_MOVIMIENTOBindingNavigatorSaveItem.Click
        Try
            SalvaCambios(True)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_DESCRIPCIONDETALLEDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles MOV_DESCRIPCIONDETALLEDataGridView.CellBeginEdit
        asignarLinea(e.RowIndex)
        If e.RowIndex + 1 > MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells(6).Value Then
            e.Cancel = True
            MessageBox.Show("Supero el tope de registro de IMEI e ICCID para esta linea", "Supero el Tope", MessageBoxButtons.OK, MessageBoxIcon.Information)
            MOV_DESCRIPCIONDETALLEDataGridView.CancelEdit()
        End If

    End Sub

    Private Sub asignarLinea(ByVal Fila As Integer)
        If Fila = 0 Then
            MOV_DESCRIPCIONDETALLEDataGridView.Rows(Fila).Cells("LINEADESCDET").Value = 1
        Else
            MOV_DESCRIPCIONDETALLEDataGridView.Rows(Fila).Cells("LINEADESCDET").Value = MOV_DESCRIPCIONDETALLEDataGridView.Rows(Fila - 1).Cells("LINEADESCDET").Value + 1
        End If
    End Sub

    Private Sub btnBuscaFactura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaFactura.Click
        Try
            Dim cmov As New cMovimiento(DsMovimiento)
            Dim fListaMov As New fListaMovimi
            fListaMov.SubClase = "VEN"
            If fListaMov.ShowDialog = Windows.Forms.DialogResult.OK Then
                If DsMovimiento.MOV_DESCRIPCIONDET.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTODETALLE.GetChanges IsNot Nothing Or DsMovimiento.MOV_MOVIMIENTO.GetChanges IsNot Nothing Then
                    If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                        SalvaCambios(False)
                    End If
                End If
                DsMovimiento.MOV_DESCRIPCIONDET.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTODETALLE.Rows.Clear()
                DsMovimiento.MOV_MOVIMIENTO.Rows.Clear()
                daMovimi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetalle.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTODETALLE, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                daMovimiDetDescri.FillByIdDocumentoNumero(DsMovimiento.MOV_DESCRIPCIONDET, fListaMov.mTipoDoc, fListaMov.mNumeroDoc)
                If CustomPrincipal.IsInRole("ADMINGC") = False And cmov.buscarCerrado(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text) = "S" Then
                    lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, False)
                Else
                    lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
                End If
                TotalizaDoc()
                ActualizaDatosTercero()
                IDDOCUMENTOTextBox.Enabled = False
                NUMEROTextBox.Enabled = False
                btnBuscaDoc.Enabled = False
                InicializaConsec()
                Dim cMovEstado As New cMovimiento(DsMovimiento)
                lDocCerrado = cMovEstado.consultaEstadoDocumento()
                Dim cRec As New cRecibos(DsConsultaMovimi)
                cRec.cargarMediosPago()
                If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then _
                    ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click
        Try
            If lDocCerrado = "S" Then
                TotalAbonos = cGeneral.GetTotalAbonos(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
            End If
            If TotalAbonos = 0 Then
                If MessageBox.Show("Esta seguro que desea eliminar este documento", "Elimina Documento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    MOV_MOVIMIENTOBindingSource.RemoveCurrent()
                    lEliminaDoc = True
                    SalvaCambios(False)
                    MessageBox.Show("Se elimino documento con exito", "Elimino Documento", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    DsConsultaMovimi.TBRECIBOCAJAMEDIOPAGO.Rows.Clear()
                    lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
                End If
            Else
                MessageBox.Show("El documento tiene Abonos, No se puede eliminar", "Abonos", MessageBoxButtons.OK)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub IDBODEGAORIGENTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDBODEGAORIGENTextBox.TextChanged
        Try
            If IDBODEGAORIGENTextBox.Text.Trim.Length > 0 Then _
                iBodOri = New cBodegas(IDBODEGAORIGENTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub IDDOCUMENTOTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDDOCUMENTOTextBox.TextChanged
        Try
            If IDDOCUMENTOTextBox.Text.Trim.Length > 0 Then _
                iTipoDoc = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub BtnBuscaFP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaFP.Click
        Try
            Dim fLisFP As New fListaFormasPago
            If fLisFP.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtFP.Text = fLisFP.FP
                ActualizaFormaPago(fLisFP.FP)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub txtfp_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFP.TextChanged
        Try
            If txtFP.Text.Trim.Length > 0 Then
                iFP = New cFormasPago(txtFP.Text)
                FECHAVENCIMIENTODateTimePicker.Value = iFP.GetFechaVence(FECHADOCUMENTODateTimePicker.Value)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub TotalizaDoc()
        Try
            Me.TXTTOTALDOC.Text = (CDbl(TXTTOTALBASE.Text) + CDbl(TXTTOTALIVA.Text)).ToString("c2")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_DESCRIPCIONDETALLEDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MOV_DESCRIPCIONDETALLEDataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If MOV_DESCRIPCIONDETALLEDataGridView.CurrentCellAddress.X = 1 Then
                            Dim flMoviDtalle As New fListaMoviDetalle
                            flMoviDtalle.pBodegaDe = IDBODEGAORIGENTextBox.Text
                            flMoviDtalle.pProducto = MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value
                            If flMoviDtalle.ShowDialog = Windows.Forms.DialogResult.OK Then
                                'MessageBox.Show("selecciono")
                                MOV_DESCRIPCIONDETALLEDataGridView.Rows(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Index).Cells(2).Value = flMoviDtalle.pImei
                                MOV_DESCRIPCIONDETALLEDataGridView.Rows(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Index).Cells(3).Value = flMoviDtalle.pIccid
                                'MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells(3).Value = fLProd.idArticulo
                                asignarLinea(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Index)
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub MOV_DESCRIPCIONDETALLEDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles MOV_DESCRIPCIONDETALLEDataGridView.DataError
        e.Cancel = True
        lbGlobalcom.cError.SalvaError(e.Exception, "Samuel")
        MessageBox.Show(e.Exception.Message)
    End Sub

    Private Sub IDTERCEROTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IDTERCEROTextBox.TextChanged
        Try
            If IDTERCEROTextBox.Text.Trim.Length > 0 Then
                iTerce = New cTercero(IDTERCEROTextBox.Text, "Cli")
                If SUCURSALTextBox.Text.Trim.Length > 0 Then _
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub SUCURSALTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SUCURSALTextBox.TextChanged
        Try
            If SUCURSALTextBox.Text.Trim.Length > 0 AndAlso iTerce IsNot Nothing Then _
                iTerce.iClientes.SeekClienteBySucursal(SUCURSALTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    
    Private Sub GetDetalleInventario(ByVal idProd As String, ByVal Cant As Integer, ByVal Fila As Integer)
        Try
            Dim bDetInv As cBuscaDetalleInvYPrepacks = New cBuscaDetalleInvYPrepacks(lIdPrepackSel, IDBODEGAORIGENTextBox.Text, idProd, "S", Cant, iTipoDoc, ckGeneraDetalleAutomatico.Checked)
            bDetInv.InsertaDatos(DsMovimiento, Fila, IDLISTATextBox.Text, Cant)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscarPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarPrepack.Click
        Try
            'MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPREPACK").Value > 0 And
            If MOV_MOVIMIENTODETALLEDataGridView.Rows.Count > 0 Then
                Dim flPrep As New fListaPrepack
                flPrep.mIdPrepack = MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPREPACK").Value
                flPrep.mBodega = IDBODEGAORIGENTextBox.Text
                flPrep.mProducto = MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPRODUCTO").Value
                iProd = New cProducto(MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPRODUCTO").Value)
                flPrep.mTipo = iProd.TipoSubProd
                flPrep.EsLista = True
                If iProd Is Nothing Then
                    iProd = New cProducto(MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPRODUCTO").Value)
                End If
                flPrep.mTipoSubProd = iProd.TipoSubProd
                If flPrep.ShowDialog = Windows.Forms.DialogResult.OK Then
                    For Each dPPackSel As cPrepacksSelect In flPrep.ListaPPack
                        If validarNumeroRegP(dPPackSel.NumeroRegP) = 0 Then
                            If MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("IDPREPACK").Value <> 0 Then
                                Dim cCargaDtalle As cCargaDetalleInvPrepacks = New cCargaDetalleInvPrepacks(dPPackSel.IdPrepack, dPPackSel.Producto, dPPackSel.Consecutivo, dPPackSel.TipoPreapck, flPrep.mBodega)
                                cCargaDtalle.InsertaDatos(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, IDLISTATextBox.Text)
                                InicializaConsec()
                                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                                'RenumerarNumeroProducto()
                            Else
                                Dim iCargaDetNoPPack As cCargaDetalleInvNoPrepack = New cCargaDetalleInvNoPrepack(DsMovimiento, dPPackSel, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                                iCargaDetNoPPack = Nothing
                            End If
                        Else
                            MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End If
                    Next
                    SalvaCambios(False)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Function validarNumeroRegP(ByVal numReg As String) As Integer
        Try
            For Each drMov As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drMov.NUMEROREGISTRO = numReg Then
                    Return 1
                End If
            Next
            Return 0
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try

    End Function

    Private Sub InicializaConsec()
        Try
            If MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow IsNot Nothing Then
                Dim NFilas As Integer = MOV_DESCRIPCIONDETALLEDataGridView.RowCount
                txtIngres.Text = NFilas
                Dim cDetLis As cDetalleListaPrecios = cListaP.DetalleLista(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO1").Value, IDCANALTextBox.Text)
                If NFilas = 0 Then
                    txtConsec.Text = 0
                ElseIf NFilas <= cDetLis.iProducto.CantidadSubProd Then
                    txtConsec.Text = NFilas
                Else
                    Dim FilaActual As Integer = NFilas - 1
                    Dim Salir = False
                    Dim NregCosecIguales As Integer = 0
                    Dim nConsec As Integer = MOV_DESCRIPCIONDETALLEDataGridView.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value
                    While Not Salir
                        If MOV_DESCRIPCIONDETALLEDataGridView.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value <> nConsec Or NregCosecIguales = cDetLis.iProducto.CantidadSubProd Then
                            Salir = True
                        Else
                            FilaActual -= 1
                            NregCosecIguales += 1
                        End If
                    End While
                    txtConsec.Text = NregCosecIguales
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Function GetConsecActual() As Integer
        If MOV_DESCRIPCIONDETALLEDataGridView.RowCount = 0 Then
            Return 1
        Else
            Return MOV_DESCRIPCIONDETALLEDataGridView.Rows(MOV_DESCRIPCIONDETALLEDataGridView.RowCount - 1).Cells("NUMEROPRODUCTO").Value
        End If
    End Function
    Private Sub ValidarRegsitroDescDetalle(ByVal Fila As Integer, ByVal Cantidad As Integer)
        Dim NFilas As Integer = MOV_DESCRIPCIONDETALLEDataGridView.RowCount
        If Not MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).IsNewRow Then
            If cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.Rows(Fila).Cells("IDPRODUCTO").Value, IDCANALTextBox.Text).iProducto.CantidadSubProd * Cantidad > NFilas Then
                txtNumeroReg.Enabled = True
                btnBuscarPrepack.Enabled = True
            Else
                txtNumeroReg.Enabled = False
                btnBuscarPrepack.Enabled = False
            End If
        End If
    End Sub

    Private Sub tpDetalle_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tpDetalle.Enter
        Try
            If iTipoDoc.DocEs = eTipoMovimi.Salida Then
                'txtNumeroReg.ReadOnly = True
                btnBuscarPrepack.Enabled = True
            Else
                'txtNumeroReg.ReadOnly = False
                btnBuscarPrepack.Enabled = False
            End If
            InicializaConsec()
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then _
                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function eliminarRegistrosDescDetalle(ByVal idProd As String, ByVal tipoSubProd As Integer, ByVal numReg As String) As Boolean
        Try
            ''Dim productoP As String
            Dim dt As New dsInvenConsultas.INV_GETPREPACKDataTable
            Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(idProd, tipoSubProd, numReg)
            dt = cGetDatos.Prepack
            Dim cant As Integer = 0
            'Dim numLinea As Integer
            If dt Is Nothing Then
                Return True
            Else
                For Each dr As dsInvenConsultas.INV_GETPREPACKRow In dt
                    For Each drDesc As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                        If drDesc.RowState <> DataRowState.Deleted Then
                            If dr.TIPOSUBPRODH > 0 Then
                                If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROH And drDesc.TIPOSUBPROD = 2 Then
                                    cant += 1
                                    'numLinea = drDesc.NUMEROLINEA
                                    drDesc.Delete()
                                    GoTo elimina
                                End If
                            End If
                            If drDesc.NUMEROREGISTRO = dr.NUMEROREGISTROP And drDesc.TIPOSUBPROD = 1 Then
                                drDesc.Delete()
                                If dr.TIPOSUBPRODH > 0 And cant = 1 Then
                                    GoTo fin
                                End If
                                'Exit For
                            End If
elimina:
                        End If
                    Next
fin:
                Next
                Return False
            End If
            'For Each drDeta As dsMovimiento.MOV_MOVIMIENTODETALLERow In DsMovimiento.MOV_MOVIMIENTODETALLE.Rows
            '    If drDeta.NUMEROLINEA = numLinea Then
            '        drDeta.CANTIDAD -= cant
            '        If drDeta.CANTIDAD = 0 Then
            '            drDeta.Delete()
            '        End If
            '        Exit For
            '    End If
            'Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Function

    Private Sub txtNumeroReg_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroReg.Validating
        Try
            If txtNumeroReg.Text.Length > 0 Then
                If validaImeiIccid(txtNumeroReg.Text) = 0 Then
                    If daInv.GetImeiIccidValido(txtNumeroReg.Text) = 1 Then
                        iProd = New cProducto(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value)
                        Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, iProd.TipoSubProd, txtNumeroReg.Text)
                        If cGetDatos.EsPrepack Then
                            If validarNumeroRegP(txtNumeroReg.Text) = 0 Then
                                Dim lDtDPPack As New dsInvenConsultas.INV_GETPREPACKDataTable
                                lDtDPPack = cGetDatos.Prepack
                                Dim drPPack As dsInvenConsultas.INV_GETPREPACKRow = lDtDPPack.Rows(0)
                                Dim cCargaDtalle As cCargaDetalleInvPrepacks = New cCargaDetalleInvPrepacks(drPPack.IDPREPACK, drPPack.IDPRODUCTOP, drPPack.CONSECPREPACK, drPPack.IDTIPOPREPACK, IDBODEGAORIGENTextBox.Text)
                                cCargaDtalle.InsertaDatos(DsMovimiento, MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, IDLISTATextBox.Text)
                                InicializaConsec()
                                ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                                'RenumerarNumeroProducto()
                                SalvaCambios(False)
                            Else
                                MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                            End If
                        Else
                            Dim conseAsigna As Integer = GetConsecActual()
                            If txtConsec.Text = txtCont.Text Then
                                conseAsigna += 1
                                txtConsec.Text = 1
                            Else
                                txtConsec.Text += 1
                            End If
                            Dim drMovDetalle As dsMovimiento.MOV_MOVIMIENTODETALLERow = DsMovimiento.MOV_MOVIMIENTODETALLE.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index)
                            Dim drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow = DsMovimiento.MOV_DESCRIPCIONDET.NewMOV_DESCRIPCIONDETRow
                            drDescDet.SetParentRow(drMovDetalle, DsMovimiento.Relations("FK_MOV_MOVIMIENTODETALLE_MOV_DESCRIPCIONDET"))
                            drDescDet.NUMEROPRODUCTO = conseAsigna
                            drDescDet.TIPOSUBPROD = cListaP.DetalleLista(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO").Value, IDCANALTextBox.Text).iProducto.TipoSubProd
                            drDescDet.NUMEROREGISTRO = txtNumeroReg.Text
                            drDescDet.COSTO = drMovDetalle.VALORBASE * (1 - drMovDetalle.DESCUENTO1) * (1 - drMovDetalle.DESCUENTO2)
                            DsMovimiento.MOV_DESCRIPCIONDET.Rows.Add(drDescDet)
                            drDescDet = Nothing
                            drMovDetalle = Nothing
                            txtIngres.Text = MOV_DESCRIPCIONDETALLEDataGridView.RowCount
                        End If
                    Else
                        MessageBox.Show("El Numero de registro no esta Inventario", "Inventario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                    End If
                Else
                    MessageBox.Show("El Numero de registro ya se ha ingresado", "NumeroRegistro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                End If
                txtNumeroReg.Text = ""
                txtNumeroReg.Focus()
            End If
            ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function validaImeiIccid(ByVal numeroRegistro As String) As Integer
        Dim existe As Integer = 0
        Try
            For Each drDes As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                If drDes("NUMEROREGISTRO") = numeroRegistro Then
                    existe = 1
                End If
            Next
            Return existe
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Function

    Private Sub btnEliminaDesDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaDesDet.Click
        Try
            If MOV_DESCRIPCIONDETALLEDataGridView.RowCount > 0 Then
                If MessageBox.Show("Esta seguro que desea eliminar el registro seleccionado", "Elimina Registro", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    Dim cGetDatos As GetDatosPrepack = New GetDatosPrepack(MOV_DESCRIPCIONDETALLEDataGridView.Rows(MOV_DESCRIPCIONDETALLEDataGridView.RowCount - 1).Cells("IDPRODUCTO1").Value, MOV_DESCRIPCIONDETALLEDataGridView.Rows(MOV_DESCRIPCIONDETALLEDataGridView.RowCount - 1).Cells("TIPOSUBPROD").Value, MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Cells("NUMEROREGISTRO").Value)
                    If CType(txtCont.Text, Integer) >= 1 And cGetDatos.EsPrepack Then
                        eliminarRegistrosDescDetalle(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Cells("IDPRODUCTO1").Value, MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Cells("TIPOSUBPROD").Value, MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Cells("NUMEROREGISTRO").Value)
                    Else
                        MOV_DESCRIPCIONDETALLEBindingSource.RemoveAt(MOV_DESCRIPCIONDETALLEDataGridView.CurrentRow.Index)
                    End If
                    lEliminaDoc = True
                    SalvaCambios(False)
                    InicializaConsec()
                    ValidarRegsitroDescDetalle(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index, MOV_MOVIMIENTODETALLEDataGridView.Rows(MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Index).Cells("CANTIDAD").Value)
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub FECHADOCUMENTODateTimePicker_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles FECHADOCUMENTODateTimePicker.Validating
        If FECHADOCUMENTODateTimePicker.Value < CustomPrincipal.Periodo.DESDEF Or FECHADOCUMENTODateTimePicker.Value > CustomPrincipal.Periodo.HASTAF Then
            MessageBox.Show("La fecha del documento debe de estar dentro del periodo abierto", "Error Fecha Documento", MessageBoxButtons.OK, MessageBoxIcon.Error)
            e.Cancel = True
        End If
    End Sub

    Private Sub btnCerrarDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrarDoc.Click
        Dim cmov As New cMovimiento(DsMovimiento)
        Try
            If cmov.cerrarDocumento() Then
                MessageBox.Show("Documento cerrado con exito", "Cerrado", MessageBoxButtons.OK, MessageBoxIcon.Information)
                If CustomPrincipal.IsInRole("ADMINGC") = False And cmov.buscarCerrado(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text) = "S" Then
                    lbGlobalcom.cGeneral.bloquearDocumento(Me.Controls, False)
                End If
                lDocCerrado = "S"
            Else
                MessageBox.Show("No se puede cerrar el documento, No esta completo", "NoCerrado", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaCaja_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaCaja.Click
        Try
            Dim flCaja As New fListaCajas
            flCaja.idSede = IDSEDETextBox.Text
            If flCaja.ShowDialog = Windows.Forms.DialogResult.OK Then
                Me.IDCAJATextBox.Text = flCaja.caja
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    
    Private Sub btnEliminaDet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaDet.Click
        Try
            If MOV_MOVIMIENTODETALLEDataGridView.CurrentRow IsNot Nothing Then

                If MOV_DESCRIPCIONDETALLEDataGridView.RowCount = 0 Then
                    MOV_MOVIMIENTODETALLEBindingSource.RemoveCurrent()
                Else
                    For Each dr As dsMovimiento.MOV_DESCRIPCIONDETRow In DsMovimiento.MOV_DESCRIPCIONDET.Rows
                        If dr.RowState <> DataRowState.Deleted Then
                            If dr("NUMEROLINEA") = MOV_MOVIMIENTODETALLEDataGridView.CurrentRow.Cells("LINEA").Value Then
                                Dim eliminaRegistro As Boolean = eliminarRegistrosDescDetalle(dr.IDPRODUCTO, dr.TIPOSUBPROD, dr.NUMEROREGISTRO)
                                If eliminaRegistro Then
                                    MOV_MOVIMIENTODETALLEBindingSource.RemoveCurrent()
                                End If
                            End If
                        End If
                    Next
                End If
                lEliminaDoc = True
                SalvaCambios(False)
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnImprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprime.Click
        Try
            Dim DatFac As cImprimeFac = New cImprimeFac(IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
            Dim ImpF As New Factura()
            ImpF.PrintOptions.ApplyPageMargins(New CrystalDecisions.Shared.PageMargins(200, 0, 0, 0))
            If My.Settings.TamañoPapelFac = "Carta" Then
                ImpF.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter
            ElseIf My.Settings.TamañoPapelFac = "Media Carta" Then
                ImpF.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperStatement
                ImpF.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape
            End If
            ImpF.SetDataSource(DatFac.DatosImprimeFac)
            Dim Para As cParametrizacion = New cParametrizacion("NOMEMPRE", "EMPRESA")
            ImpF.SetParameterValue("PEMPRESA", Para.Valor.ToString)
            Para = New cParametrizacion("NIT", "EMPRESA")
            ImpF.SetParameterValue("PNIT", Para.Valor.ToString)
            Dim iSede As New cSedes(CustomPrincipal.IDSede)
            ImpF.SetParameterValue("PSUCURSAL", iSede.nombre & vbNewLine & iSede.direccion & vbNewLine & iSede.Ciudad)
            Dim tDoc As cTipoDocumento = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
            Dim cons As cConsecutivo = New cConsecutivo(tDoc.idConsecutivo)
            tDoc = Nothing
            ImpF.SetParameterValue("PREFIJO", cons.Prefijo)
            ImpF.SetParameterValue("PRESOLUCION", "Resol. POS: " & cons.Numeroresolucion & " de " & cons.Fecharesolucion.ToString("d") & "  -  Rango: " & cons.Prefijo & "-" & cons.Numeroinicial.ToString.PadLeft(6, "0") & " hasta " & cons.Prefijo & "-" & cons.Numerofinal.ToString.PadLeft(6, "0"))
            If My.Settings.ImpFacPorPantalla Then
                Dim fPPvFac As New fPVFactura
                fPPvFac.Reporte = ImpF
                fPPvFac.Show()
            Else
                ImpF.PrintToPrinter(1, True, 0, 0)
            End If
            ImpF = Nothing
            lbGlobalcom.cGeneral.MarcaDocumento(True, True, IDDOCUMENTOTextBox.Text, NUMEROTextBox.Text)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub SUCURSALTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SUCURSALTextBox.Validating
        Try
            If SUCURSALTextBox.Text.Trim.Length > 0 Then
                Dim SalCli As cSaldoCliente = New cSaldoCliente(IDTERCEROTextBox.Text, SUCURSALTextBox.Text)
                If SalCli.Disponible <= 0 Then
                    MessageBox.Show("Cliente no tiene cupo, debe de incrementar el cupo o hacer el pago de facturas para liberar", "Sin Cupo", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                    e.Cancel = True
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub MOV_MOVIMIENTODETALLEDataGridView_RowValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MOV_MOVIMIENTODETALLEDataGridView.RowValidated
        TotalizaDoc()
    End Sub

  
   
    Private Sub TBRECIBOCAJAMEDIOPAGODataGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles TBRECIBOCAJAMEDIOPAGODataGridView.CellMouseDoubleClick
        Try
            Select Case TBRECIBOCAJAMEDIOPAGODataGridView.Columns(e.ColumnIndex).Name
                Case "IDMEDIOPAGO"
                    If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                        Dim fListMP As New fListaMediosPago
                        If fListMP.ShowDialog = Windows.Forms.DialogResult.OK Then
                            If verificaMediopago(fListMP.IdMedioPag) = False Then
                                TBRECIBOCAJAMEDIOPAGODataGridView.CurrentRow.Cells("IDMEDIOPAGO").Value = fListMP.IdMedioPag
                            Else
                                MessageBox.Show("El medio de pago ya se Ingreso", "medioPago", MessageBoxButtons.OK)
                            End If
                        End If
                    End If
            End Select
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function verificaMediopago(ByVal IdMedioPago) As Boolean
        Try
            For Each drMedioPago As dsConsultaMovimi.TBRECIBOCAJAMEDIOPAGORow In DsConsultaMovimi.TBRECIBOCAJAMEDIOPAGO
                If drMedioPago.IDMEDIOPAGO = IdMedioPago Then
                    Return True
                End If
            Next
            Return False
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Function

    Private Sub TBRECIBOCAJAMEDIOPAGODataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TBRECIBOCAJAMEDIOPAGODataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If MOV_MOVIMIENTODETALLEDataGridView.CurrentCellAddress.X = 2 Then
                            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                                Dim fListMP As New fListaMediosPago
                                If fListMP.ShowDialog = Windows.Forms.DialogResult.OK Then
                                    If verificaMediopago(fListMP.IdMedioPag) = False Then
                                        TBRECIBOCAJAMEDIOPAGODataGridView.CurrentRow.Cells("IDMEDIOPAGO").Value = fListMP.IdMedioPag
                                    Else
                                        MessageBox.Show("El medio de pago ya se Ingreso", "medioPago", MessageBoxButtons.OK)
                                    End If
                                End If
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnEliminaMedioPago_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaMedioPago.Click
        Try
            If TBRECIBOCAJAMEDIOPAGODataGridView.CurrentRow IsNot Nothing Then
                TBRECIBOCAJAMEDIOPAGOBindingSource.RemoveCurrent()
                MessageBox.Show("Registro eliminado con exito", "Elimina", MessageBoxButtons.OK)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try

    End Sub

    Private Sub btnBuscaDocumentoRecibo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaDocumentoRecibo.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "REC"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                txtDocumentoRecibo.Text = fLDoc.idTipoDoc
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try

    End Sub

    Private Sub btnGenerarRecibo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerarRecibo.Click
        Try
            If txtDocumentoRecibo.Text <> "" And lDocCerrado = "S" Then
                Dim cRec As New cRecibos(DsMovimiento, DsConsultaMovimi, txtDocumentoRecibo.Text)
                Dim mensaje As String = cRec.generaRecibo()
                If mensaje <> "" Then
                    MessageBox.Show(mensaje, "Recibo", MessageBoxButtons.OK)
                End If
            Else
                MessageBox.Show("Debe seleccionar un documento de recibo y cerrar la factura", "ReciboFactura", MessageBoxButtons.OK)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub
End Class
